///////////////////////////////////////////////////////////////////////////////
// Project: Hoyo Client Game
//
// hy_battle_unit.cpp
// Created: 2013-7-30
// Author: Like Cheng
///////////////////////////////////////////////////////////////////////////////

#include "hy_battle_unit.h"
#include "hy_battle_system/hy_buff_data.h"
#include "hy_common_system/hy_common_func.h"

#include "hy_common_system/hy_common_data.h"
#include "hy_player_system/hy_player_data.h"
//#include "hy_pet_system/hy_pet_data.h"
#include "hy_battle_system/hy_monster_data.h"

///////////////////////////////////////////////////////////////////////////////
//hy_battle_unit::hy_battle_unit
///////////////////////////////////////////////////////////////////////////////
hy_battle_unit::hy_battle_unit()
{
	init();
}
///////////////////////////////////////////////////////////////////////////////
//hy_battle_unit::~hy_battle_unit
///////////////////////////////////////////////////////////////////////////////
hy_battle_unit::~hy_battle_unit()
{

}
///////////////////////////////////////////////////////////////////////////////
//hy_battle_unit::init
///////////////////////////////////////////////////////////////////////////////
bool hy_battle_unit::init()
{
	m_value.clear();
	m_type = battle_unit_type_player;
	m_id = 0;
	m_pos = 0;	
	m_scale = 1.0f;	
	m_add_attr = 0.0f;
	m_unit_ptr = NULL;
	m_icon = 0;
	m_model = 0;
	m_quality = 0;	
	m_battle_state = battle_unit_live;
	
	m_send = false;
	m_client_state = battle_client_state_null;	
	m_round = 0;

	return true;
}

void hy_battle_unit::set_json_value()
{
	m_value["type"] = m_type;
	m_value["id"] = m_id;
	m_value["pos"] = m_pos;
	m_value["icon"] = m_icon;
	m_value["model"] = m_model;
	m_value["quality"] = m_quality;
	m_value["scale"] = m_scale;
	m_value["add_attr"] = m_add_attr;
	//m_value["unit_ptr"] = (int)m_unit_ptr;

	if( m_unit_ptr )
	{
		m_value["cur_hp"] = m_unit_ptr->get_cur_hp();
		m_value["max_hp"] = m_unit_ptr->get_max_hp();
	}
	//bu_json["value"] = m_value;
}
///////////////////////////////////////////////////////////////////////////////
//hy_battle_unit::get_json_value
///////////////////////////////////////////////////////////////////////////////
Json::Value	hy_battle_unit::get_json_value()
{
	set_json_value();
	return m_value;
}

void hy_battle_unit::set_battle_state( battle_unit_state_enum state_ )
{
	m_battle_state = state_;
}
/*
bool hy_battle_unit::get_buff_attack()
{
	hy_buff_data_map::iterator it = m_buff_data_map.find( (int)hy_buff_data_pause_to );
	if( it != m_buff_data_map.end() )
	{
		return false;
	}
	return true;
}
bool hy_battle_unit::get_buff_protected()
{
	hy_buff_data_map::iterator it = m_buff_data_map.find( (int)hy_buff_data_protect );
	if( it != m_buff_data_map.end() )
	{
		return true;
	}
	return false;
}


bool hy_battle_unit::get_buff_redirth()
{
	hy_buff_data_map::iterator it = m_buff_data_map.find( (int)hy_buff_data_rebirth );
	if( it != m_buff_data_map.end() )
	{
		return true;
	}
	return false;
}
hy_buff_data* hy_battle_unit::get_buff_by_type( hy_buff_data_enum type )
{
	hy_buff_data_map::iterator it = m_buff_data_map.find( (int)hy_buff_data_rebirth );
	if( it != m_buff_data_map.end() )
	{
		return it->second;
	}
	return NULL;
}*/